var dgram = require('dgram');

var server = dgram.createSocket('udp4');

// message事件--socket端口接收到数据时触发
server.on('message', function(msg, rinfo){
	console.log("已接收客户端发送的数据：" + msg);
	console.log("客户端地址信息%j", rinfo);
	var buf = new Buffer("确认信息：" + msg);
	server.send(buf, 0, buf.length, rinfo.port, rinfo.address);
	setTimeout(function(){
		// 虽然也可以使用UPD服务器用于监听客户端连接的socket端口对象的close方法关闭UDP服务器，
		// 但是在有多个客户端与客户端UDP服务器建立连接的情况下，该方法会产生一个错误。
		// server.close();

		// unref方法--指定当不存在与该socket端口对象进行通信的客户端连接时允许运行UDP服务器的应用程序被正常退出
		server.unref();
	},5000);
});


// listening事件--socket端口对象开始监听来自于指定地址及端口号的数据时触发
// 当创建UDP服务器时，必须使用该方法，这样UDP客户端才能知道向哪个地址发送数据
server.on('listening', function(){
	var address = server.address();
	console.log("服务器开始监听，地址信息%j", address);
});


// bind方法--指定socket端口对象监听的地址与端口号
server.bind(41234, 'localhost');